home *** CD-ROM | disk | FTP | other *** search
- Path: xanth!cs.odu.edu!Amiga-Request
- From: Amiga-Request@cs.odu.edu (Amiga Sources/Binaries Moderator)
- Newsgroups: comp.sources.amiga
- Subject: v90i202: env 1.1 - print out all environment variables, Part01/01
- Message-ID: <13080@xanth.cs.odu.edu>
- Date: 8 Jul 90 15:36:52 GMT
- Sender: tadguy@cs.odu.edu
- Reply-To: peterc@softway.sw.oz.au (Peter Chubb)
- Lines: 249
- Approved: tadguy@cs.odu.edu (Tad Guy)
- X-Mail-Submissions-To: Amiga@cs.odu.edu
- X-Post-Discussions-To: comp.sys.amiga
-
- Submitted-by: peterc@softway.sw.oz.au (Peter Chubb)
- Posting-number: Volume 90, Issue 202
- Archive-name: unix/env-1.1/part01
-
- ENV is a utility to print out the values of all 1.3 Environment variables.
- It has been optimised for size, and takes less than 488 bytes.
- Moreover, unlike other routines I have seen for handling environment
- variables, it copes with variables with embedded newlines.
-
- #!/bin/sh
- # This is a shell archive. Remove anything before this line, then unpack
- # it by saving it into a file and typing "sh file". To overwrite existing
- # files, type "sh file -c". You can also feed this as standard input via
- # unshar, or by typing "sh <file", e.g.. If this archive is complete, you
- # will see the following message at the end:
- # "End of archive 1 (of 1)."
- # Contents: Makefile env.c env.doc env.uu
- # Wrapped by tadguy@xanth on Sun Jul 8 11:36:44 1990
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f 'Makefile' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'Makefile'\"
- else
- echo shar: Extracting \"'Makefile'\" \(389 characters\)
- sed "s/^X//" >'Makefile' <<'END_OF_FILE'
- X#
- X# Makefile for env
- X#
- X# $Header: local:src/MINE/cmd/env/RCS/Makefile,v 1.2 90/05/26 12:55:30 peterc Exp $
- X#
- X# $Log: Makefile,v $
- X# Revision 1.2 90/05/26 12:55:30 peterc
- X# Added RCS goo
- X#
- X#
- X#
- Xenv: env.o
- X blink from env.o to env nd
- X protect env +p
- X
- Xenv.o: env.c
- X lc -cus -v -O env.c
- X
- X
- Xinstall: env
- X copy env local:bin
- X
- Xclean:
- X rm -f env.o
- X
- Xclobber: clean
- X rm -f env
- X
- X.DEFAULT:
- X co $@
- END_OF_FILE
- if test 389 -ne `wc -c <'Makefile'`; then
- echo shar: \"'Makefile'\" unpacked with wrong size!
- fi
- # end of 'Makefile'
- fi
- if test -f 'env.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'env.c'\"
- else
- echo shar: Extracting \"'env.c'\" \(1689 characters\)
- sed "s/^X//" >'env.c' <<'END_OF_FILE'
- X/************************************************************************
- X * env.c -- print all the environment *
- X * *
- X * Copyright 1990 Peter Chubb *
- X * All rights reserved *
- X * *
- X ************************************************************************/
- X
- Xstatic char RCSID[] = "$Id: env.c,v 1.1 90/05/26 12:46:48 peterc Exp $";
- X
- X/*
- X *
- X * $Log: env.c,v $
- X * Revision 1.1 90/05/26 12:46:48 peterc
- X * Initial revision
- X *
- X *
- X */
- X
- X# include <exec/types.h>
- X# include <proto/dos.h>
- X# include <proto/exec.h>
- X# include <string.h>
- X
- X# define ENVDIR "ENV:"
- X# define BUFSIZ 512
- X
- Xvoid
- X_main()
- X{
- X BPTR lck;
- X BPTR Op;
- X BPTR Ep;
- X struct FileInfoBlock *FB = AllocMem(sizeof(struct FileInfoBlock), 0);
- X long Status = 0;
- X register char *p;
- X register char *q;
- X int len;
- X struct DosLibrary *DOSBase;
- X char *buf = AllocMem(BUFSIZ, 0);
- X
- X if (!(DOSBase = (struct DosLibrary *) OpenLibrary("dos.library", 0)))
- X return;
- X
- X Op = Output();
- X
- X lck = Lock(ENVDIR, SHARED_LOCK);
- X if (lck)
- X {
- X Status = Examine(lck, FB);
- X if (Status)
- X while (ExNext(lck, FB))
- X {
- X if (FB->fib_EntryType >= 0)
- X continue;
- X Write(Op, FB->fib_FileName, strlen(FB->fib_FileName));
- X Write(Op, "=", 1);
- X for (p = ENVDIR, q = buf; *p; *q++ = *p++)
- X ;
- X for (p = FB->fib_FileName; *p; *q++ = *p++)
- X ;
- X *q = '\0';
- X
- X if ((Ep = Open(buf, MODE_OLDFILE)) != (BPTR)0)
- X {
- X if ((len = Read(Ep, buf, BUFSIZ)) > 0)
- X {
- X Write(Op, buf, len);
- X }
- X Close(Ep);
- X }
- X Write(Op, "\n", 1);
- X }
- X UnLock(lck);
- X }
- X
- X CloseLibrary((struct Library *)DOSBase);
- X FreeMem(buf, BUFSIZ);
- X FreeMem(FB, sizeof (*FB));
- X}
- END_OF_FILE
- if test 1689 -ne `wc -c <'env.c'`; then
- echo shar: \"'env.c'\" unpacked with wrong size!
- fi
- # end of 'env.c'
- fi
- if test -f 'env.doc' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'env.doc'\"
- else
- echo shar: Extracting \"'env.doc'\" \(1311 characters\)
- sed "s/^X//" >'env.doc' <<'END_OF_FILE'
- X ENV -- print out environment variables.
- X
- X ENV is a 484 byte program that prints out the values of all the
- X 1.3 Environment variables. It is fully reentrant (i.e.,
- X can be made resident).
- X
- XTo use, just type
- X env
- X
- X The result is a list of environment variables in the form
- X NAME=Value, one per line.
- X
- XBUGS:
- X Environment variables whose values are greater than 511 bytes
- X long are truncated at 511 bytes.
- X
- XAUTHOR:
- X Peter Chubb (peterc@softway.oz.au)
- X
- X
- X Copyright 1990 Peter Chubb
- X All rights reserved.
- X This program and its associated documentation may not be
- X distributed for profit. It may be distributed provided
- X a) no charge is made other than for reasonable copying and
- X media expenses,
- X b) no change is made to the source, documentation or binary,
- X that is not clearly marked as being a change, and
- X c) all files are provided. These comprise:
- X env.doc -- this documentation file
- X env -- the program binary
- X Makefile-- to make the program
- X env.c -- the program source.
- X
- X This program is not warranted, or guaranteed.
- X You get exactly what you paid for -- a copy of the program to
- X do as you wish with. If it crashes your machine, writes rude
- X letters to your spouse, or explodes in your face ... caveat
- X emptor! However, to the best of my knowledge and belief it
- X works as advertised.
- END_OF_FILE
- if test 1311 -ne `wc -c <'env.doc'`; then
- echo shar: \"'env.doc'\" unpacked with wrong size!
- fi
- # end of 'env.doc'
- fi
- if test -f 'env.uu' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'env.uu'\"
- else
- echo shar: Extracting \"'env.uu'\" \(711 characters\)
- sed "s/^X//" >'env.uu' <<'END_OF_FILE'
- Xbegin 500 env
- XM```#\P`````````"``````````$```!@````#````^D```!@3E7_\$CG-S`@Y
- XM/````01R`"QX``1.KO\Z)$`@2B](`"@@/````@!R`$ZN_SHO0``D0_H!.'``[
- XM3J[]V"9`($LO2``@(`MG``$<)&\`*"9(+$M.KO_$+@!#^@$>(@ET_DZN_ZPL!
- XM`$J&9P``UB(&)`I.KO^:2H!G``#`8```K"`J`'A*@&H``*(D;P`H)F\`($'JH
- XM``@B2$H99OQ3B9/(+T@`'"(')`@F"2Q+3J[_T"('0_H`S"0)=@%.KO_01_H`I
- XMNB1O`"1@`A3;2A-F^B9O`!Q@`A3;2A-F^D(2)F\`("1O`"0B"BQ+)#P```/MQ
- XM3J[_XBH`2H5G("(%)`HF/````@!.KO_62H!O""(')@!.KO_0(@5.KO_<(@=!J
- XM^@!F)`AV`4ZN_]`D;P`H(@8D"BQ+3J[_E$J`9@#_2"(&+$M.KO^F(DLL>``$Q
- XM3J[^8B)O`"0@/````@!.KO\N(DH@/````01.KO\N3-\,[$Y=3G5D;W,N;&EB*
- XM<F%R>0!%3E8Z```]``H````#\@```^H````,)$ED.B!E;G8N8RQV(#$N,2`Y&
- XB,"\P-2\R-B`Q,CHT-CHT."!P971E<F,@17AP("0````#\G8NU
- X``
- Xend
- Xsize 484
- END_OF_FILE
- if test 711 -ne `wc -c <'env.uu'`; then
- echo shar: \"'env.uu'\" unpacked with wrong size!
- fi
- # end of 'env.uu'
- fi
- echo shar: End of archive 1 \(of 1\).
- cp /dev/null ark1isdone
- MISSING=""
- for I in 1 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have the archive.
- rm -f ark[1-9]isdone
- else
- echo You still need to unpack the following archives:
- echo " " ${MISSING}
- fi
- ## End of shell archive.
- exit 0
- --
- Mail submissions (sources or binaries) to <amiga@cs.odu.edu>.
- Mail comments to the moderator at <amiga-request@cs.odu.edu>.
- Post requests for sources, and general discussion to comp.sys.amiga.
-